package com.dabai.dbutils.utils;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.widget.Toast;

import androidx.core.content.FileProvider;

import java.io.File;
import java.util.ArrayList;

/**
 * Description : Other
 *
 * @author BAI
 */
public class ShareUtils {

    /**
     * 分享一张图片
     *
     * @param context 上下文
     * @param bitmap  位图
     */
    public static void shareSingleImage(Context context, Bitmap bitmap) {
        File file = new File(context.getExternalCacheDir() + "/tmpImage/tmpImage.jpg");
        boolean isOk = FileUtils.saveBitmap(bitmap,file.getAbsolutePath());

        if (isOk){
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            Uri photoUri = FileProvider.getUriForFile(
                    context,
                    context.getPackageName() + ".fileProvider",file);

            shareIntent.putExtra(Intent.EXTRA_STREAM, photoUri);
            shareIntent.setType("image/*");
            context.startActivity(Intent.createChooser(shareIntent, "分享到"));
        }else {
            System.out.println("保存失败了,不能分享这张图了");
        }
    }


    /**
     * 共享文件
     * 分享文件
     *
     * @param context 上下文
     * @param file    文件
     * @param mime    mime
     */
    public static void shareFile(Context context, File file, String mime) {
        if (null != file && file.exists()) {
            Intent share = new Intent(Intent.ACTION_SEND);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvider",file);
                share.putExtra(Intent.EXTRA_STREAM, contentUri);
                share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            } else {
                share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
            }
            share.setType(mime);
            share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            context.startActivity(Intent.createChooser(share, "分享文件"));
        } else {
            Toast.makeText(context, "分享文件不存在", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 分享多个文件
     * 共享文件
     * 分享文件
     *
     * @param context 上下文
     * @param mime    mime
     * @param files   文件
     */
    public static void shareMultipleFile(Context context, String mime, ArrayList<File> files) {

        ArrayList<Uri> uris = new ArrayList<>();

        for (File file : files) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvider", file);
                uris.add(contentUri);
            } else {
                uris.add(Uri.fromFile(file));
            }

        }

        boolean multiple = uris.size() > 1;
        Intent intent = new Intent(multiple ? android.content.Intent.ACTION_SEND_MULTIPLE
                : android.content.Intent.ACTION_SEND);

        intent.setType(mime);

        if (multiple) {
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        } else {
            intent.putExtra(Intent.EXTRA_STREAM, uris.get(0));
        }
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        context.startActivity(Intent.createChooser(intent, "分享文件"));

    }

    /**
     * Uri 分享文件携带mime
     *
     * @param context 上下文
     * @param uri     uri
     * @param mime    mime
     */
    public static void shareFile(Context context, Uri uri, String mime) {
        try {
            //分享
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);

            shareIntent.setType(mime);
            context.startActivity(Intent.createChooser(shareIntent, "分享到"));
        } catch (Exception e) {
            Toast.makeText(context, "调用分享组件失败!" + e, Toast.LENGTH_SHORT).show();
        }
    }



    /**
     * 系统分享文本
     *
     * @param context 上下文
     * @param text    文本
     */
    public static void shareText(Context context, String text) {

        try {
            Intent sendIntent = new Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            // 指定发送内容的类型
            sendIntent.setType("text/plain");
            sendIntent.putExtra(Intent.EXTRA_TEXT, text);

            context.startActivity(Intent.createChooser(sendIntent, "分享文本"));
        } catch (Exception e) {
            Toast.makeText(context, "调用分享组件失败!" + e, Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 分享应用酷安下载链接
     *
     * id 为 应用名
     * R.string.app_name
     *
     */
    public static void shareFromCoolApk(Context context,int id) {
        shareText(context, "推荐应用 【" + context.getResources().getString(id) + "】： https://www.coolapk.com/apk/" + context.getPackageName() + "  分享自【" + context.getResources().getString(id) + " App】");
    }


    /**
     * 发送电子邮件
     * 发送邮件
     *
     * @param context 上下文
     * @param address 地址
     * @param title   标题
     * @param text    文本
     */
    public static void sendEmail(Context context,String address,String title,String text){
        Intent data=new Intent(Intent.ACTION_SENDTO);
        data.setData(Uri.parse("mailto:"+address));
        data.putExtra(Intent.EXTRA_SUBJECT, title);
        data.putExtra(Intent.EXTRA_TEXT, text);
        context.startActivity(data);
    }

}
